﻿//using Wizard.Statements;
//using Wizard.Source;
//using Wizard.Interfaces;
//using System.Collections.Generic;

//namespace Wizard.Runtime
//{
//    [Statement("Method File runtime instance.")]
//    public class MethodInstance : Statement
//    {
//        private IBlockSource mMainBlock;
//        internal MethodSource mMethodSource;

//        public MethodInstance(MethodSource methodSource)
//        {
//            mMethodSource = methodSource;
//        }

//        [Block("main Block")]
//        public IBlockSource Main
//        {
//            set { mMainBlock = value; }
//        }

//        //public void Run()
//        //{
//        //    var src = new StatementSource();
//        //    //src.mStatements.Add(mMethodSource);
//        //    //mBlockInstance = new StatementInstance(); //this, src, null, null);

//        //        var runningMethod = mApplication.StartMethod(mWizardControl.mMethod, mWizardControl);
//        //        mWizardControl.EntityType = "RunningMethod";
//        //        mWizardControl.EntityRef = runningMethod.runningMethodId.ToString();
//        //        mWizardControl.CurrentPc = runningMethod.CurrentPc;
            
            
//        //    while (true)
//        //    {
//        //        var runningMethod = mWizardControl.RunningMethod;
//        //        var Method = runningMethod.Method;
//        //        mWizardControl.mMethod = Method;
//        //        Interpretor.MoveTo(mWizardControl.RunningMethod, mWizardControl.CurrentPc, mWizardControl);
//        //    }

//        //    //IStatement SourceInstance = mMethodSource.Instantiate(mBlockInstance);
//        //    //mInstanceStack.Clear();
//        //    //mNextStatements.Clear();
//        //    //while (mBlockInstance.mRunning < RunningState.Finished)
//        //    //{
//        //    //    mBlockInstance.StepForward();
//        //    //}
//        //}

//        #region Nested type: StatementAndInstance

//        internal class StatementAndInstance
//        {
//            internal StatementSource mStatement;
//            internal IStatement mIStatement;

//            public StatementAndInstance(StatementSource statement, IStatement istatement)
//            {
//                mStatement = statement;
//                mIStatement = istatement;
//            }
//        }

//        #endregion

//        //protected override void OnEnter(StatementInstance statementInstance)
//        //{
//        //    statementInstance.Gosub = mMainBlock;
//        //}

//        //protected override void OnLeave(StatementInstance statementInstance)
//        //{
//        //    base.OnLeave(statementInstance);
//        //    // youhou
//        //}  
//    }
//}